package com.battle.service.service.in;

import com.battle.pojo.param.caseBaseInfo.CaseStatisticsParam;
import com.battle.pojo.param.caseBaseInfo.GetCaseDiscountingParam;
import com.battle.pojo.vo.caseBaseInfo.CaseDiscountingVo;
import jakarta.servlet.http.HttpServletResponse;
import nirvana.core.domains.vo.PageResult;
import com.battle.pojo.param.personWarCase.*;
import com.battle.pojo.vo.personWarCase.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;


/**
 * 【描 述】：人员战力表服务
 * 【环 境】：J2SE
 * 【详 细】：
 */
public interface PersonWarCaseService {

    /**
     * 创建人员战力表
     *
     * @param param
     */
    Long createPersonWarCase(CreatePersonWarCaseParam param);

    /**
     * 修改人员战力表
     *
     * @param param
     */
    void editPersonWarCase(EditPersonWarCaseParam param);

    /**
     * 移除人员战力表
     *
     * @param id
     */
    void removePersonWarCase(Long id);

    /**
     * 启动/禁用人员战力表
     *
     * @param id
     */
    void enabledPersonWarCase(Long id);

    /**
     * 获取人员战力表详情
     *
     * @param id
     * @return
     */
    GetPersonWarCaseVo getPersonWarCase(Long id);

    /**
     * 获取人员战力表列表
     *
     * @param param
     * @return
     */
    PageResult<GetPersonWarCaseListVo> getPersonWarCaseList(GetPersonWarCaseListParam param);

    /**
     * 导出人员战力
     * @param param
     * @param response
     * @throws IOException
     */
    void exportPersonWarCaseList(GetPersonWarCaseListParam param, HttpServletResponse response) throws IOException;

    /**
     * 获取人员战力表下拉列表
     *
     * @param param
     * @return
     */
    List<GetPersonWarCaseDownListVo> getPersonWarCaseDownList(GetPersonWarCaseDownListParam param);


    /**
     * 获取组织架构下需要考试的人员列表
     * @param param
     * @return
     */
    List<GetPersonWarCaseDownListVo> getPersonTrainingList(GetPersonTrainingListParam param);

    /**
     * 根据评估参数重新计算人员指数和队伍指数车辆指数
     */
    void updateCombatPower();


    /**
     * 获取人员报告url
     * @param id
     * @return
     */
    String getReportUrl(Long id);


    /**
     * 战力统计折线图
     * @param
     * @return
     */
    CaseDiscountingVo getWarCaseNumber(GetCaseDiscountingParam param);

    /**
     * 根据类型获取战力计饼图
     * @param param
     * @return
     */
    List<GetPersonWarCaseDetailsVo> getWarCaseDetailsNumber(CaseStatisticsParam param);


    /**
     * 导入人员战力表
     * @param file
     */
    void importPersonWarCase(MultipartFile file);

    /**
     * 清除所有的人员对应的path数据
     */
    void setPathByPersonWar();
}